Basic project setup (#4) 
diff --git a/pylintrc b/pylintrc new file mode 100644 index 0000000..1a47c02 --- /dev/null +++ b/pylintrc 
@@ -0,0 +1,164 @@ +[MASTER] +# Add files or directories to the blacklist. They should be base names, not +# paths. +ignore=CVS,.git,.cache,.tox,.nox + +# List of plugins (as comma separated values of python modules names) to load, +# usually to register additional checkers. +# DEFAULT: load-plugins= +# RATIONALE: We want to make sure our docstrings match the objects +# they document. +load-plugins=pylint.extensions.check_docs + +[MESSAGES CONTROL] +# Disable the message, report, category or checker with the given id(s). You +# can either give multiple identifiers separated by comma (,) or put this +# option multiple times (only on the command line, not in the configuration +# file where it should appear only once).You can also use "--disable=all" to +# disable everything first and then reenable specific checks. For example, if +# you want to run only the similarities checker, you can use "--disable=all +# --enable=similarities". If you want to run only the classes checker, but have +# no Warning level messages displayed, use"--disable=all --enable=classes +# --disable=W" +# +# RATIONALE: +# - maybe-no-member: bi-modal functions confuse pylint type inference. +# - no-member: indirections in protobuf-generated code +# - protected-access: helpers use '_foo' of classes from generated code. +# - similarities: 'Bucket' and 'Blob' define 'metageneration' and 'owner' with +# identical implementation but different docstrings. +# - star-args: standard Python idioms for varargs: +# ancestor = Query().filter(*order_props) +# - redefined-variable-type: This error is overzealous and complains at e.g. +# if some_prop: +# return int(value) +# else: +# return float(value) +# - import-error: imports are checked via tests. +# - wrong-import-position: This error is overzealous. It assumes imports are +# completed whenever something non-trivial is +# defined, e.g. +# try: +# from foo import Bar +# except ImportError: +# class Bar(object): +# """Hi everyone""" +# and thus causes subsequent imports to be +# diagnosed as out-of-order. +# - no-name-in-module: Error gives a lot of false positives for names which +# are defined dynamically. Also, any truly missing names +# will be detected by our 100% code coverage. +# - locally-disabled: Allow us to make exceptions in edge cases, notably where +# pylint doesn't recognize inherited properties and methods +# and gives unused-argument errors. +# TEMPORARILY DISABLE AND SHOULD BE REMOVED: +# - fixme: disabled until 1.0 +# +disable = + import-star-module-level, + old-octal-literal, + oct-method, + print-statement, + unpacking-in-except, + parameter-unpacking, + backtick, + old-raise-syntax, + old-ne-operator, + long-suffix, + dict-view-method, + dict-iter-method, + metaclass-assignment, + next-method-called, + raising-string, + indexing-exception, + raw_input-builtin, + long-builtin, + file-builtin, + execfile-builtin, + coerce-builtin, + cmp-builtin, + buffer-builtin, + basestring-builtin, + apply-builtin, + filter-builtin-not-iterating, + using-cmp-argument, + useless-suppression, + range-builtin-not-iterating, + suppressed-message, + no-absolute-import, + old-division, + cmp-method, + reload-builtin, + zip-builtin-not-iterating, + intern-builtin, + unichr-builtin, + reduce-builtin, + standarderror-builtin, + unicode-builtin, + xrange-builtin, + coerce-method, + delslice-method, + getslice-method, + setslice-method, + input-builtin, + round-builtin, + hex-method, + nonzero-method, + map-builtin-not-iterating, + maybe-no-member, + no-member, + protected-access, + similarities, + star-args, + redefined-variable-type, + import-error, + wrong-import-position, + no-name-in-module, + locally-disabled, + fixme + + +[REPORTS] +# Tells whether to display a full report or only the messages +# RATIONALE: noisy +reports=no + +[BASIC] +# Regular expression matching correct method names +# DEFAULT: method-rgx=[a-z_][a-z0-9_]{2,30}$ +# RATIONALE: Some methods have longer names to be more descriptive or precise, +# especially those that implemented wordy RFCs. +method-rgx=[a-z_][a-z0-9_]{2,40}$ + +# Regular expression matching correct function names +# DEFAULT function-rgx=[a-z_][a-z0-9_]{2,30}$ +# RATIONALE: Some methods have longer names to be more descriptive or precise, +# especially those that implemented wordy RFCs. +function-rgx=[a-z_][a-z0-9_]{2,40}$ + +[TYPECHECK] +# List of module names for which member attributes should not be checked +# (useful for modules/projects where namespaces are manipulated during runtime +# and thus existing member attributes cannot be deduced by static analysis. It +# supports qualified module names, as well as Unix pattern matching. +# DEFAULT: ignored-modules= +# RATIONALE: six aliases stuff for compatibility. +# google.protobuf fixes up namespace package "late". +ignored-modules = six, google.protobuf + + +[DESIGN] +# Minimum number of public methods for a class (see R0903). +# DEFAULT: min-public-methods=2 +# RATIONALE: context mgrs may have *no* public methods +min-public-methods=0 + +# Maximum number of arguments for function / method +# DEFAULT: max-args=5 +# RATIONALE: Many credentials classes take a lot of parameters. +max-args = 10 + +# Maximum number of attributes for a class (see R0902). +# DEFAULT: max-attributes=7 +# RATIONALE: Many credentials need to track lots of properties. +max-attributes=15